package cc.owoo.godpen.network.http;

/**
 * 报文头部属性
 * Created by nimensei
 * 2022-02-25 下午 09:31
 **/
public abstract class HeaderProperty<T> {
    final String headerName;// 请求报文头部名称

    HeaderProperty(String key) {
        headerName = key;
    }

    /**
     * 获取请求报文头部名称，一般由AbstractHeader对象调用，用来设置发送给浏览器/服务器的报文头部键名称
     *
     * @return 报文头部名称
     */
    public String getHeaderName() {
        return headerName;
    }

    /**
     * 数据是否无效或为空
     *
     * @return 数据是否无效或为空
     */
    abstract boolean isEmpty();

    /**
     * 序列化
     *
     * @return 序列化字符串
     */
    abstract String stringify();

    /**
     * 解析字符串
     *
     * @param value 解析字符串字符串
     */
    abstract T parse(String value);

    /**
     * 清空数据
     */
    abstract void clear();
}
